﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace ReplaceCsv.WallLogParser
{
    class GiestaParsePattern
    {
        private static GiestaExtractParameterJSONList _JSONSetting = null;
        public static GiestaExtractParameterJSONList getParameterList(){
            GiestaExtractParameterJSONList result = null;
            initSettging();
            result = _JSONSetting;
            return result;
        }
        /// <summary>
        /// タイトルをもとにソート結果を取得（昇順ソート）
        /// </summary>
        /// <param name="a">比較（左）</param>
        /// <param name="b">比較（右）</param>
        /// <returns></returns>
        public static int getAscSortCheck(string a, string b)
        {
            initSettging();
            int result = getSortSeq(a).CompareTo(getSortSeq(b)) ;
            //タイトルのSEQが設定値に存在しない（もしくは同じ値）場合、タイトル自身を比較する。
            return result == 0 ? a.CompareTo(b) : result; 
        }
        /// <summary>
        /// タイトルソート用の値を取得、ソート値が存在していないケースはmax値とする
        /// </summary>
        /// <param name="title"></param>
        /// <returns></returns>
        private static int getSortSeq(string title){
            return _JSONSetting.TitleSortInfo.ContainsKey(title) ? _JSONSetting.TitleSortInfo[title] : int.MaxValue;
        }
        /// <summary>
        /// JSONファイルから設定地を取得する
        /// </summary>
        private static void initSettging()
        {
            if (GiestaParsePattern._JSONSetting == null)
            {
                string appPath = Application.StartupPath;
                //Exeと同じフォルダーに、GIESTAParse.jsonファイルとしておくこと
                using (StreamReader file = File.OpenText(appPath + @"/GIESTAParse.json"))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    _JSONSetting = (GiestaExtractParameterJSONList)serializer.Deserialize(file, typeof(GiestaExtractParameterJSONList));
                }
            }
        }
    }
}
